package model

import (
	"blogdemo/gin/settings"
	"fmt"
	"github.com/jinzhu/gorm"
	"time"
)

var db *gorm.DB
var err error

func InitDB() {
	// 数据库初始化连接
	args := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true",
		settings.Username,
		settings.Password,
		settings.Host,
		settings.Port,
		settings.Database,
		settings.Charset)

	db, err = gorm.Open(settings.DriverName, args)
	// 设置单数表名
	db.SingularTable(true)
	if err != nil {
		panic("fail to connect database, errmsg: " + err.Error())
	}
	fmt.Println("succeed to connect database")
	db.AutoMigrate(&User{}, &Profile{}, &Article{}, &Preference{}, &Comment{})

	// SetMaxIdleCons 设置连接池中的最大闲置连接数
	db.DB().SetMaxIdleConns(10)
	// SetMaxOpenCons 设置数据库的最大连接数量
	db.DB().SetMaxOpenConns(100)
	// SetConnMaxLifetime 设置连接的最大可复用时间
	db.DB().SetConnMaxLifetime(10 * time.Second)
}
